<?php
////////////OUVERTURE ET COMPARAISON DONNEES CSV ET CONTENU BDD/////////////////////

include 'header.php';
session_start();

$groupe = $_SESSION['groupe'];
$tableau_csv_serial = $_POST['tableau_csv'];

echo "<p>Comparaison entre le CSV et la base de données ...</p>";

$tableau_csv = deserialiserTableau($tableau_csv_serial);

// recup tous les champs et enregistrements de la table Eleves/Profs
$req_bdd = bddSelect(recupIni('nombdd'), "*", $groupe, "1"); 

$tableau_insert = Array();
$tableau_ignore = Array();
$tableau_update = Array();
$tableau_delete = Array();

$enreg_bdd = 1;

while ($resultat_bdd = $req_bdd->fetch()) { // boucle tableau BDD jusqu'au bout de la table

//    echo 'vardump resultatbdd';
//    var_dump($resultat_bdd);
        
    $enreg_csv = 1;
    while ($enreg_csv <= sizeof($tableau_csv)) { // boucle tableau CSV jusqu'au bout du tableaucsv

        if ($resultat_bdd[0] === $tableau_csv[$enreg_csv][0]) { /// si un code eleve/prof de la BDD correspond à un code eleve/prof du CSV

            if ($groupe == "Eleves") { ///// Eleves
                if (
                    $resultat_bdd[1] == $tableau_csv[$enreg_csv][1]  /// et si les champs de cet eleve correspondent tous à ceux du CSV
                    && $resultat_bdd[2] == $tableau_csv[$enreg_csv][2] 
                    && $resultat_bdd[3] == $tableau_csv[$enreg_csv][3] 
                    && $resultat_bdd[4] == jma2amj($tableau_csv[$enreg_csv][4]) 
                    && $resultat_bdd[6] == $tableau_csv[$enreg_csv][5]
                ) {
                    $tableau_ignore[$enreg_csv] = ignoreEnreg($groupe, $tableau_csv, $enreg_csv); /// alors IGNORE : on ne touche à rien
                } else {
                    $tableau_update[$enreg_csv] = updateEnreg($groupe, $tableau_csv, $enreg_csv); /// sinon UPDATE : on met à jour les champs
                }
            } else { /// Professeurs
                $nb_colonnes = 7;
                $tableau_csv_classes = array();
                for ($num_classe = $nb_colonnes; $num_classe < sizeof($tableau_csv[$enreg_csv]); $num_classe++) {
                    $tableau_csv_classes[$num_classe] = $tableau_csv[$enreg_csv][$num_classe];
                }
                /// listing classes d'après BDD -> tableau $bdd_classes
                $index_prof = $tableau_csv[$enreg_csv][0];

                $resultat_classes = getClassesBDD($index_prof);

                if (
                        $resultat_bdd[1] == $tableau_csv[$enreg_csv][1]  /// et si les champs de ce prof correspondent tous à ceux du CSV
                        && $resultat_bdd[2] == $tableau_csv[$enreg_csv][2] 
                        && $resultat_bdd[3] == $tableau_csv[$enreg_csv][3] 
                        && $resultat_bdd[4] == $tableau_csv[$enreg_csv][4] 
                        && $resultat_bdd[5] == jma2amj($tableau_csv[$enreg_csv][5]) 
                        && $resultat_classes == $tableau_csv_classes
                ) {
                    $tableau_ignore[$enreg_csv] = ignoreEnreg($groupe, $tableau_csv, $enreg_csv); /// alors IGNORE : on ne touche à rien
                } else {
                    $tableau_update[$enreg_csv] = updateEnreg($groupe, $tableau_csv, $enreg_csv); /// sinon UPDATE : on met à jour les champs
                }
            }

            break; /// on sort de la boucle CSV puisqu'on a déjà trouvé un élève/prof correspondant dans la BDD et le CSV 
        }
        $enreg_csv++; /// sinon on continue à chercher dans l'enregistrement CSV suivant
    } // fin boucle while tableau CSV

    if ($enreg_csv > sizeof($tableau_csv)) { /// si l'index nombre d'enregistrement a depassé le nombre d'article
        $resultat_classes = getClassesBDD($resultat_bdd[0]);
        $tableau_delete[$enreg_bdd] = deleteEnreg($groupe, $resultat_bdd, $resultat_classes, $enreg_bdd); 
        /// alors DELETE : on efface l'enregistrement de cet eleve/prof ds la BDD
    }

    $enreg_bdd++; /// on continue et on lit toute la table Eleves/Professeurs de la BDD
} // fin boucle tableau BDD
//
//echo "<br><hr><h3>Traitement pour INSERT</h3><hr><br>";
//
///////////// I N S E R T //////////////////////////
// Pour le INSERT, on lit tous les enreg du CSV et on verifie s'ils existent dejà dans la BDD

/// compte le nombre d'enregistrements de la table Eleves/Professeurs 
$req_count = bddSelect(recupIni('nombdd'), "count(*) AS total_count", $groupe, "1");  
$result_count = $req_count->fetch();


$enreg_csv = 1;
$enreg_bdd_2 = 1;

$pdo_groupe = connexionTable(recupIni('nombdd')); 

while ($enreg_csv <= sizeof($tableau_csv)) { // boucle tableau CSV

    // on refait la requete recup champs et enreg de la table Eleves/Professeurs
    $req_bdd_2 = bddSelect(recupIni('nombdd'), "*", $groupe, "1"); 
    
        while ($result_bdd_2 = $req_bdd_2->fetch()) { // boucle tableau BDD  

            if ($result_bdd_2[0] == $tableau_csv[$enreg_csv][0]) { // si le code_eleve/prof de la BDD et du CSV correspondent
                break;  // on ne fait rien, on sort de la boucle et on ira au prochaine enregistrement du CSV
            }
            $enreg_bdd_2++; // enreg BDD suivant

            if ($enreg_bdd_2 > $result_count['total_count']) { /// si l'index a dépassé le nb d'enreg de la BDD, c'est que
                $tableau_insert[$enreg_csv] = insertEnreg($groupe, $tableau_csv, $enreg_csv); // alors INSERT : on cree l'enreg dans la BDD
            }
        }

    $enreg_bdd_2 = 1; // on recommencera à partir du 1er enregistrement de la BDD
    $enreg_csv++; // enregistrement suivant dans le tableaucsv
}

    $tableau_general = array(
        "Insert" => $tableau_insert,
        "Ignore" => $tableau_ignore,
        "Update" => $tableau_update,
        "Delete" => $tableau_delete,
    );

?>

<p>CSV et base de données comparés</p>

<!--<div id="bas"></div>
<br><hr><br>          -->
<form method="POST" action="listingsCRUD.php">
    <input type="hidden" name="verifier" id="verifier" value="<?php echo serialiserTableau($tableau_general) ?>">
    <input type="hidden" name="titre" id="titre" value="csv2xml pour ILIAS - Vérification avant génération et mise à jour">
    <button class="btn btn-info" type="submit">Continuer >>> </button>
</form>             

</body>
</html>

